package com.starview.platform.data;

import com.starview.platform.data.type.IType;



/**
 * The {@link IFunction} interface is implemented by code: functions and
 * procedures.
 * 
 * @author fgm
 * 
 */

public interface IFunction
{
  /**
   * Enter a function and return the result thereof
   * @param args
   *          the arguments to the function
   * 
   * @return the value returned by the function
   */
  IValue enter(IValue... args) throws EvaluationException;

  /**
   * All functions expose a means of getting their type
   * 
   * @return the type of the function
   */
  IType getType();
}
